package com.qjq.glasses_shopping.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qjq.glasses_shopping.pojo.ProductType;
import com.qjq.glasses_shopping.result.BaseResult;
import com.qjq.glasses_shopping.service.ProductTypeService;

import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
    商品类型服务
 */
@RestController
@RequestMapping("/productType")
public class ProductTypeController {
    @Resource
    private ProductTypeService productTypeService;

    /**
     * 添加商品类型
     * @param productType 商品类型信息
     * @return 返回执行结果
     */
    @PostMapping("/add")
    public BaseResult add(@RequestBody ProductType productType) {
        productTypeService.add(productType);
        return BaseResult.ok();
    }

    /**
     * 修改商品类型
     * @param productType 商品类型信息
     * @return 返回执行结果
     */
    @PutMapping("/update")
    public BaseResult update(@RequestBody ProductType productType) {
        productTypeService.update(productType);
        return BaseResult.ok();
    }

    /**
     * 根据id删除商品类型信息
     * @param id 商品类型id
     * @return 返回执行结果
     */
    @DeleteMapping("/delete")
    public BaseResult delete(Long id) {
        productTypeService.delete(id);
        return BaseResult.ok();
    }

    /**
     * 根据id查询商品类型
     * @param id 商品类型id
     * @return 返回执行结果
     */
    @GetMapping("/findById")
    public BaseResult findById(Long id) {
        ProductType productType = productTypeService.findById(id);
        return BaseResult.ok(productType);
    }

    /**
     * 分页查询商品类型
     * @param productType 查询条件
     * @param page 页码
     * @param size 分页条数
     * @return 返回查询结果
     */
    @GetMapping("/search")
    public BaseResult<Page<ProductType>> search(ProductType productType,int page,int size) {
        Page<ProductType> productTypePage = productTypeService.search(productType,page,size);
        return BaseResult.ok(productTypePage);
    }

    /**
     * 查询商品类型列表
     * @param productType 查询条件商品类型
     * @return 返回查询结果
     */
    @GetMapping("/findProductType")
    public BaseResult<List<ProductType>> findProductType(ProductType productType) {
        List<ProductType> productTypeList = productTypeService.findProductType(productType);
        return BaseResult.ok(productTypeList);
    }

    /**
     * 根据父类型id查询商品类型
     * @param parentId 父类型id
     * @return 返回查询结果
     */
    @GetMapping("/findByParentId")
    public BaseResult<List<ProductType>> findByParentId(Long parentId) {
        ProductType productType = new ProductType();
        productType.setParentId(parentId);
        List<ProductType> productTypeList = productTypeService.findProductType(productType);
        return BaseResult.ok(productTypeList);
    }

}
